<?php echo $this->tag->javascriptInclude("admin/js/timepicker.js");?>
<?php echo $this->tag->javascriptInclude("admin/js/tokeninput.js");?>
<script>
	$(document).ready(function() {
		// 日期时间控件
		$('#date').mask('9999-99-99 99:99').datetimepicker({
			currentText     :   '现在',
			prevText        :   '上一月',
			nextText        :   '下一月',
			monthNames      :   ['一月', '二月', '三月', '四月',
				'五月', '六月', '七月', '八月',
				'九月', '十月', '十一月', '十二月'],
			dayNames        :   ['星期日', '星期一', '星期二',
				'星期三', '星期四', '星期五', '星期六'],
			dayNamesShort   :   ['周日', '周一', '周二', '周三',
				'周四', '周五', '周六'],
			dayNamesMin     :   ['日', '一', '二', '三',
				'四', '五', '六'],
			closeText       :   '完成',
			timeOnlyTitle   :   '选择时间',
			timeText        :   '时间',
			hourText        :   '时',
			amNames         :   ['上午', 'A'],
			pmNames         :   ['下午', 'P'],
			minuteText      :   '分',
			secondText      :   '秒',

			dateFormat      :   'yy-mm-dd',
			hour            :   (new Date()).getHours(),
			minute          :   (new Date()).getMinutes()
		});

		// 聚焦
		$('#title').select();

		// text 自动拉伸
		Typecho.editorResize('text', 'http://typecho.git.com/index.php/action/ajax?do=editorResize&_=2370b95f6af602ad6db6e40d8cf00f93');

		// tag autocomplete 提示
		var tags = $('#tags'), tagsPre = [];

		if (tags.length > 0) {
			var items = tags.val().split(','), result = [];
			for (var i = 0; i < items.length; i ++) {
				var tag = items[i];

				if (!tag) {
					continue;
				}

				tagsPre.push({
					id      :   tag,
					tags    :   tag
				});
			}

			tags.tokenInput([], {
				propertyToSearch:   'tags',
				tokenValue      :   'tags',
				searchDelay     :   0,
				preventDuplicates   :   true,
				animateDropdown :   false,
				hintText        :   '请输入标签名',
				noResultsText   :   '此标签不存在, 按回车创建',
				prePopulate     :   tagsPre,

				onResult        :   function (result, query) {
					if (!query) {
						return result;
					}

					if (!result) {
						result = [];
					}

					if (!result[0] || result[0]['id'] != query) {
						result.unshift({
							id      :   query,
							tags    :   query
						});
					}

					return result.slice(0, 5);
				}
			});

			// tag autocomplete 提示宽度设置
			$('#token-input-tags').focus(function() {
				var t = $('.token-input-dropdown'),
					offset = t.outerWidth() - t.width();
				t.width($('.token-input-list').outerWidth() - offset);
			});
		}

		// 缩略名自适应宽度
		var slug = $('#slug');

		if (slug.length > 0) {
			var wrap = $('<div />').css({
					'position'  :   'relative',
					'display'   :   'inline-block'
				}),
				justifySlug = $('<pre />').css({
					'display'   :   'block',
					'visibility':   'hidden',
					'height'    :   slug.height(),
					'padding'   :   '0 2px',
					'margin'    :   0
				}).insertAfter(slug.wrap(wrap).css({
					'left'      :   0,
					'top'       :   0,
					'minWidth'  :   '5px',
					'position'  :   'absolute',
					'width'     :   '100%'
				})), originalWidth = slug.width();

			function justifySlugWidth() {
				var val = slug.val();
				justifySlug.text(val.length > 0 ? val : '     ');
			}

			slug.bind('input propertychange', justifySlugWidth);
			justifySlugWidth();
		}

		// 原始的插入图片和文件
		Typecho.insertFileToEditor = function (file, url, isImage) {
			var textarea = $('#text'), sel = textarea.getSelection(),
				html = isImage ? '<img src="' + url + '" alt="' + file + '" />'
					: '<a href="' + url + '">' + file + '</a>',
				offset = (sel ? sel.start : 0) + html.length;

			textarea.replaceSelection(html);
			textarea.setSelection(offset, offset);
		};

		var submitted = false, form = $('form[name=write_post],form[name=write_page]').submit(function () {
			submitted = true;
		}), savedData = null;

		// 自动保存

		// 自动检测离开页
		var lastData = form.serialize();

		$(window).bind('beforeunload', function () {
			if (!!savedData) {
				lastData = savedData;
			}

			if (form.serialize() != lastData && !submitted) {
				return '内容已经改变尚未保存, 您确认要离开此页面吗?';
			}
		});

		// 控制选项和附件的切换
		var fileUploadInit = false;
		$('#edit-secondary .typecho-option-tabs li').click(function() {
			$('#edit-secondary .typecho-option-tabs li').removeClass('active');
			$(this).addClass('active');
			$('.tab-content').addClass('hidden');

			var selected_tab = $(this).find('a').attr('href'),
				selected_el = $(selected_tab).removeClass('hidden');

			if (!fileUploadInit) {
				selected_el.trigger('init');
				fileUploadInit = true;
			}

			return false;
		});

		// 高级选项控制
		$('#advance-panel-btn').click(function() {
			$('#advance-panel').toggle();
			return false;
		});

		// 自动隐藏密码框
		$('#visibility').change(function () {
			var val = $(this).val(), password = $('#post-password');
			console.log(val);

			if ('password' == val) {
				password.removeClass('hidden');
			} else {
				password.addClass('hidden');
			}
		});

		// 草稿删除确认
		$('.edit-draft-notice a').click(function () {
			if (confirm('您确认要删除这份草稿吗?')) {
				window.location.href = $(this).attr('href');
			}

			return false;
		});
	});
</script>
<?php echo $this->tag->javascriptInclude("admin/js/pagedown.js");?>
<?php echo $this->tag->javascriptInclude("admin/js/stmd.js");?>
<?php echo $this->tag->javascriptInclude("admin/js/diff.js");?>
<script>
	$(document).ready(function () {
		var textarea = $('#text'),
			toolbar = $('<div class="editor" id="wmd-button-bar" />').insertBefore(textarea.parent()),
			preview = $('<div id="wmd-preview" class="wmd-hidetab" />').insertAfter('.editor');

		var options = {}, isMarkdown = 1;

		options.strings = {
			bold: '加粗 <strong> Ctrl+B',
			boldexample: '加粗文字',

			italic: '斜体 <em> Ctrl+I',
			italicexample: '斜体文字',

			link: '链接 <a> Ctrl+L',
			linkdescription: '请输入链接描述',

			quote:  '引用 <blockquote> Ctrl+Q',
			quoteexample: '引用文字',

			code: '代码 <pre><code> Ctrl+K',
			codeexample: '请输入代码',

			image: '图片 <img> Ctrl+G',
			imagedescription: '请输入图片描述',

			olist: '数字列表 <ol> Ctrl+O',
			ulist: '普通列表 <ul> Ctrl+U',
			litem: '列表项目',

			heading: '标题 <h1>/<h2> Ctrl+H',
			headingexample: '标题文字',

			hr: '分割线 <hr> Ctrl+R',
			more: '摘要分割线 <!--more--> Ctrl+M',

			undo: '撤销 - Ctrl+Z',
			redo: '重做 - Ctrl+Y',
			redomac: '重做 - Ctrl+Shift+Z',

			fullscreen: '全屏 - Ctrl+J',
			exitFullscreen: '退出全屏 - Ctrl+E',
			fullscreenUnsupport: '此浏览器不支持全屏操作',

			imagedialog: '<p><b>插入图片</b></p><p>请在下方的输入框内输入要插入的远程图片地址</p><p>您也可以使用附件功能插入上传的本地图片</p>',
			linkdialog: '<p><b>插入链接</b></p><p>请在下方的输入框内输入要插入的链接地址</p>',

			ok: '确定',
			cancel: '取消',

			help: 'Markdown语法帮助'
		};

		var converter = new Typecho.Markdown,
			editor = new Markdown.Editor(converter, '', options),
			diffMatch = new diff_match_patch(), last = '', preview = $('#wmd-preview'),
			mark = '@mark' + Math.ceil(Math.random() * 100000000) + '@',
			span = '<span class="diff" />',
			cache = {};


		// 自动跟随
		converter.hooks.chain('postConversion', function (html) {
			// clear special html tags
			html = html.replace(/<\/?(\!doctype|html|head|body|link|title|input|select|button|textarea|style|noscript)[^>]*>/ig, function (all) {
				return all.replace(/&/g, '&amp;')
					.replace(/</g, '&lt;')
					.replace(/>/g, '&gt;')
					.replace(/'/g, '&#039;')
					.replace(/"/g, '&quot;');
			});

			// clear hard breaks
			html = html.replace(/\s*((?:<br>\n)+)\s*(<\/?(?:p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend|article|section|nav|aside|hgroup|header|footer|figcaption|li|dd|dt)[^\w])/gm, '$2');

			if (html.indexOf('<!--more-->') > 0) {
				var parts = html.split(/\s*<\!\-\-more\-\->\s*/),
					summary = parts.shift(),
					details = parts.join('');

				html = '<div class="summary">' + summary + '</div>'
					+ '<div class="details">' + details + '</div>';
			}


			var diffs = diffMatch.diff_main(last, html);
			last = html;

			if (diffs.length > 0) {
				var stack = [], markStr = mark;

				for (var i = 0; i < diffs.length; i ++) {
					var diff = diffs[i], op = diff[0], str = diff[1]
					sp = str.lastIndexOf('<'), ep = str.lastIndexOf('>');

					if (op != 0) {
						if (sp >=0 && sp > ep) {
							if (op > 0) {
								stack.push(str.substring(0, sp) + markStr + str.substring(sp));
							} else {
								var lastStr = stack[stack.length - 1], lastSp = lastStr.lastIndexOf('<');
								stack[stack.length - 1] = lastStr.substring(0, lastSp) + markStr + lastStr.substring(lastSp);
							}
						} else {
							if (op > 0) {
								stack.push(str + markStr);
							} else {
								stack.push(markStr);
							}
						}

						markStr = '';
					} else {
						stack.push(str);
					}
				}

				html = stack.join('');

				if (!markStr) {
					var pos = html.indexOf(mark), prev = html.substring(0, pos),
						next = html.substr(pos + mark.length),
						sp = prev.lastIndexOf('<'), ep = prev.lastIndexOf('>');

					if (sp >= 0 && sp > ep) {
						html = prev.substring(0, sp) + span + prev.substring(sp) + next;
					} else {
						html = prev + span + next;
					}
				}
			}

			// 替换img
			html = html.replace(/<(img)\s+([^>]*)\s*src="([^"]+)"([^>]*)>/ig, function (all, tag, prefix, src, suffix) {
				if (!cache[src]) {
					cache[src] = false;
				} else {
					return '<span class="cache" data-width="' + cache[src][0] + '" data-height="' + cache[src][1] + '" '
						+ 'style="background:url(' + src + ') no-repeat left top; width:'
						+ cache[src][0] + 'px; height:' + cache[src][1] + 'px; display: inline-block; max-width: 100%;'
						+ '-webkit-background-size: contain;-moz-background-size: contain;-o-background-size: contain;background-size: contain;" />';
				}

				return all;
			});

			// 替换block
			html = html.replace(/<(iframe|embed)\s+([^>]*)>/ig, function (all, tag, src) {
				if (src[src.length - 1] == '/') {
					src = src.substring(0, src.length - 1);
				}

				return '<div style="background: #ddd; height: 40px; overflow: hidden; line-height: 40px; text-align: center; font-size: 12px; color: #777">'
					+ tag + ' : ' + $.trim(src) + '</div>';
			});

			return html;
		});

		function cacheResize() {
			var t = $(this), w = parseInt(t.data('width')), h = parseInt(t.data('height')),
				ow = t.width();

			t.height(h * ow / w);
		}

		var to;
		editor.hooks.chain('onPreviewRefresh', function () {
			var diff = $('.diff', preview), scrolled = false;

			if (to) {
				clearTimeout(to);
			}

			$('img', preview).load(function () {
				var t = $(this), src = t.attr('src');

				if (scrolled) {
					preview.scrollTo(diff, {
						offset  :   - 50
					});
				}

				if (!!src && !cache[src]) {
					cache[src] = [this.width, this.height];
				}
			});

			$('.cache', preview).resize(cacheResize).each(cacheResize);

			var changed = $('.diff', preview).parent();
			if (!changed.is(preview)) {
				changed.css('background-color', 'rgba(255,230,0,0.5)');
				to = setTimeout(function () {
					changed.css('background-color', 'transparent');
				}, 4500);
			}

			if (diff.length > 0) {
				var p = diff.position(), lh = diff.parent().css('line-height');
				lh = !!lh ? parseInt(lh) : 0;

				if (p.top < 0 || p.top > preview.height() - lh) {
					preview.scrollTo(diff, {
						offset  :   - 50
					});
					scrolled = true;
				}
			}
		});


		var input = $('#text'), th = textarea.height(), ph = preview.height(),
			uploadBtn = $('<button type="button" id="btn-fullscreen-upload" class="btn btn-link">'
				+ '<i class="i-upload">附件</i></button>')
				.prependTo('.submit .right')
				.click(function() {
					$('a', $('.typecho-option-tabs li').not('.active')).trigger('click');
					return false;
				});

		$('.typecho-option-tabs li').click(function () {
			uploadBtn.find('i').toggleClass('i-upload-active',
				$('#tab-files-btn', this).length > 0);
		});

		editor.hooks.chain('enterFakeFullScreen', function () {
			th = textarea.height();
			ph = preview.height();
			$(document.body).addClass('fullscreen');
			var h = $(window).height() - toolbar.outerHeight();

			textarea.css('height', h);
			preview.css('height', h);
		});

		editor.hooks.chain('enterFullScreen', function () {
			$(document.body).addClass('fullscreen');

			var h = window.screen.height - toolbar.outerHeight();
			textarea.css('height', h);
			preview.css('height', h);
		});

		editor.hooks.chain('exitFullScreen', function () {
			$(document.body).removeClass('fullscreen');
			textarea.height(th);
			preview.height(ph);
		});

		function initMarkdown() {
			editor.run();

			var imageButton = $('#wmd-image-button'),
				linkButton = $('#wmd-link-button');

			Typecho.insertFileToEditor = function (file, url, isImage) {
				var button = isImage ? imageButton : linkButton;

				options.strings[isImage ? 'imagename' : 'linkname'] = file;
				button.trigger('click');

				var checkDialog = setInterval(function () {
					if ($('.wmd-prompt-dialog').length > 0) {
						$('.wmd-prompt-dialog input').val(url).select();
						clearInterval(checkDialog);
						checkDialog = null;
					}
				}, 10);
			};

			Typecho.uploadComplete = function (file) {
				Typecho.insertFileToEditor(file.title, file.url, file.isImage);
			};

			// 编辑预览切换
			var edittab = $('.editor').prepend('<div class="wmd-edittab"><a href="#wmd-editarea" class="active">撰写</a><a href="#wmd-preview">预览</a></div>'),
				editarea = $(textarea.parent()).attr("id", "wmd-editarea");

			$(".wmd-edittab a").click(function() {
				$(".wmd-edittab a").removeClass('active');
				$(this).addClass("active");
				$("#wmd-editarea, #wmd-preview").addClass("wmd-hidetab");

				var selected_tab = $(this).attr("href"),
					selected_el = $(selected_tab).removeClass("wmd-hidetab");

				// 预览时隐藏编辑器按钮
				if (selected_tab == "#wmd-preview") {
					$("#wmd-button-row").addClass("wmd-visualhide");
				} else {
					$("#wmd-button-row").removeClass("wmd-visualhide");
				}

				// 预览和编辑窗口高度一致
				$("#wmd-preview").outerHeight($("#wmd-editarea").innerHeight());

				return false;
			});
		}

		if (isMarkdown) {
			initMarkdown();
		} else {
			var notice = $('<div class="message notice">这篇文章不是由Markdown语法创建的, 继续使用Markdown编辑它吗? '
				+ '<button class="btn btn-xs primary yes">是</button> '
				+ '<button class="btn btn-xs no">否</button></div>')
				.hide().insertBefore(textarea).slideDown();

			$('.yes', notice).click(function () {
				notice.remove();
				$('<input type="hidden" name="markdown" value="1" />').appendTo('.submit');
				initMarkdown();
			});

			$('.no', notice).click(function () {
				notice.remove();
			});
		}
	});
</script>

<?php echo $this->tag->javascriptInclude("admin/js/moxie.js");?>
<?php echo $this->tag->javascriptInclude("admin/js/plupload.js");?>
<script>
	$(document).ready(function() {
		function updateAttacmentNumber () {
			var btn = $('#tab-files-btn'),
				balloon = $('.balloon', btn),
				count = $('#file-list li .insert').length;

			if (count > 0) {
				if (!balloon.length) {
					btn.html($.trim(btn.html()) + ' ');
					balloon = $('<span class="balloon"></span>').appendTo(btn);
				}

				balloon.html(count);
			} else if (0 == count && balloon.length > 0) {
				balloon.remove();
			}
		}

		$('.upload-area').bind({
			dragenter   :   function () {
				$(this).parent().addClass('drag');
			},

			dragover    :   function (e) {
				$(this).parent().addClass('drag');
			},

			drop        :   function () {
				$(this).parent().removeClass('drag');
			},

			dragend     :   function () {
				$(this).parent().removeClass('drag');
			},

			dragleave   :   function () {
				$(this).parent().removeClass('drag');
			}
		});

		updateAttacmentNumber();

		function fileUploadStart (file) {
			$('<li id="' + file.id + '" class="loading">'
				+ file.name + '</li>').appendTo('#file-list');
		}

		function fileUploadError (error) {
			var file = error.file, code = error.code, word;

			switch (code) {
				case plupload.FILE_SIZE_ERROR:
					word = '文件大小超过限制';
					break;
				case plupload.FILE_EXTENSION_ERROR:
					word = '文件扩展名不被支持';
					break;
				case plupload.FILE_DUPLICATE_ERROR:
					word = '文件已经上传过';
					break;
				case plupload.HTTP_ERROR:
				default:
					word = '上传出现错误';
					break;
			}

			var fileError = '%s 上传失败'.replace('%s', file.name),
				li, exist = $('#' + file.id);

			if (exist.length > 0) {
				li = exist.removeClass('loading').html(fileError);
			} else {
				li = $('<li>' + fileError + '<br />' + word + '</li>').appendTo('#file-list');
			}

			li.effect('highlight', {color : '#FBC2C4'}, 2000, function () {
				$(this).remove();
			});
		}

		var completeFile = null;
		function fileUploadComplete (id, url, data) {
			var li = $('#' + id).removeClass('loading').data('cid', data.cid)
				.data('url', data.url)
				.data('image', data.isImage)
				.html('<input type="hidden" name="attachment[]" value="' + data.cid + '" />'
					+ '<a class="insert" target="_blank" href="###" title="点击插入文件">' + data.title + '</a><div class="info">' + data.bytes
					+ ' <a class="file" target="_blank" href="http://typecho.git.com/admin/media.php?cid='
					+ data.cid + '" title="编辑"><i class="i-edit"></i></a>'
					+ ' <a class="delete" href="###" title="删除"><i class="i-delete"></i></a></div>')
				.effect('highlight', 1000);

			attachInsertEvent(li);
			attachDeleteEvent(li);
			updateAttacmentNumber();

			if (!completeFile) {
				completeFile = data;
			}
		}

		$('#tab-files').bind('init', function () {
			var uploader = new plupload.Uploader({
				browse_button   :   $('.upload-file').get(0),
				url             :   'http://typecho.git.com/index.php/action/upload?_=2370b95f6af602ad6db6e40d8cf00f93',
				runtimes        :   'html5,flash,html4',
				flash_swf_url   :   'http://typecho.git.com/admin/js/Moxie.swf',
				drop_element    :   $('.upload-area').get(0),
				filters         :   {
					max_file_size       :   '2mb',
					mime_types          :   [{'title' : '允许上传的文件', 'extensions' : 'gif,jpg,jpeg,png,tiff,bmp'}],
					prevent_duplicates  :   true
				},

				init            :   {
					FilesAdded      :   function (up, files) {
						plupload.each(files, function(file) {
							fileUploadStart(file);
						});

						completeFile = null;
						uploader.start();
					},

					UploadComplete  :   function () {
						if (completeFile) {
							Typecho.uploadComplete(completeFile);
						}
					},

					FileUploaded    :   function (up, file, result) {
						if (200 == result.status) {
							var data = $.parseJSON(result.response);

							if (data) {
								fileUploadComplete(file.id, data[0], data[1]);
								return;
							}
						}

						fileUploadError({
							code : plupload.HTTP_ERROR,
							file : file
						});
					},

					Error           :   function (up, error) {
						fileUploadError(error);
					}
				}
			});

			uploader.init();
		});

		function attachInsertEvent (el) {
			$('.insert', el).click(function () {
				var t = $(this), p = t.parents('li');
				Typecho.insertFileToEditor(t.text(), p.data('url'), p.data('image'));
				return false;
			});
		}

		function attachDeleteEvent (el) {
			var file = $('a.insert', el).text();
			$('.delete', el).click(function () {
				if (confirm('确认要删除文件 %s 吗?'.replace('%s', file))) {
					var cid = $(this).parents('li').data('cid');
					$.post('http://typecho.git.com/index.php/action/contents-attachment-edit?_=2370b95f6af602ad6db6e40d8cf00f93',
						{'do' : 'delete', 'cid' : cid},
						function () {
							$(el).fadeOut(function () {
								$(this).remove();
								updateAttacmentNumber();
							});
						});
				}

				return false;
			});
		}

		$('#file-list li').each(function () {
			attachInsertEvent(this);
			attachDeleteEvent(this);
		});
	});
</script>

<script>
	$(document).ready(function () {
		// 自定义字段
		$('#custom-field-expand').click(function() {
			var btn = $('i', this);
			if (btn.hasClass('i-caret-right')) {
				btn.removeClass('i-caret-right').addClass('i-caret-down');
			} else {
				btn.removeClass('i-caret-down').addClass('i-caret-right');
			}
			$(this).parent().toggleClass('fold');
			return false;
		});

		function attachDeleteEvent (el) {
			$('button.btn-xs', el).click(function () {
				if (confirm('确认要删除此字段吗?')) {
					$(this).parents('tr').fadeOut(function () {
						$(this).remove();
					});
				}
			});
		}

		$('#custom-field table tbody tr').each(function () {
			attachDeleteEvent(this);
		});

		$('#custom-field button.operate-add').click(function () {
			var html = '<tr><td><input type="text" name="fieldNames[]" placeholder="字段名称" class="text-s w-100"></td>'
					+ '<td><select name="fieldTypes[]" id="">'
					+ '<option value="str">字符</option>'
					+ '<option value="int">整数</option>'
					+ '<option value="float">小数</option>'
					+ '</select></td>'
					+ '<td><textarea name="fieldValues[]" placeholder="字段值" class="text-s w-100" rows="2"></textarea></td>'
					+ '<td><button type="button" class="btn btn-xs">删除</button></td></tr>',
				el = $(html).hide().appendTo('#custom-field table tbody').fadeIn();

			attachDeleteEvent(el);
		});
	});
</script>